package 集合.Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;

public class colletionDemo2 {
    public static void main(String[] args) {
/*
            Collection的遍历方式：
            迭代器遍历(iterator)
            增强for遍历
            Lambda表达式遍历
 */
        /*
        迭代器的细节特点：
        1.报错：NoSuchElementException(迭代器的指针已经指向了最后没有元素的位置，再次遍历会报错)
        2.迭代器遍历完毕，指针不会复位
        3.循环只能使用一次next方法
        4.迭代器遍历时，不能用集合的方法进行增加或删除
         */
//      创建集合并添加元素
        Collection<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        System.out.println("-----------------迭代器遍历-----------------");
//        2.获取迭代器对象
//        迭代器对象默认指向集合的零元素
        Iterator<String> it=list.iterator();
//        3.利用循环不断地去获取集合中的每一个元素
        while(it.hasNext()) {
//            4.next方法：获取元素并移动指针
            String str = it.next();
            System.out.println(str);
        }
//          当上面循环结束后，迭代器的指针已经指向了最后没有元素的位置，再次遍历会报错
//        System.out.println(it.next());NoSuchElementException
//        迭代器遍历完成，指针不会复位  it.hasNext(判断是否有元素)
        System.out.println(it.hasNext());//false
//        如果需要再次遍历集合，需要创建一个新的迭代器对象，重复以上步骤
        Iterator<String> it2 = list.iterator();



//        增强for遍历
        System.out.println("-----------------增强for遍历----------------");
        for (String s:list){
//            s="q";类似这样 修改增强for中的变量不会该笔哪集合中原本的数据。
            System.out.println(s);

        }
        //            lambda表达式
        System.out.println("----------------lambda表达式-----------------");
        list.forEach(new Consumer<String>() {
            @Override
//            s  依次表示集合中的某些数据
            public void accept(String s) {
                System.out.println(s);
            }
        });
    }
}
